package api

import (
	"fmt"
	"strings"
	"time"
)

// GetSum 定义一个函数，返回值类型为函数并且这个函数的形参为整型，返回值为整型
func GetSum() func(int) int {
	var sum int = 0
	return func(num int) int {
		sum += num

		return sum
	}
}

func GetSumBak(num int) int {
	var sum int = 0
	sum += num

	return sum
}

func Add(num int, num1 int) int {
	// 在Golang中，程序遇到defer关键字，不会立即执行defer后的语句，而是将defer后的语句压入一个栈中，然后继续执行函数后面的代码
	defer fmt.Println("num=", num)// 压入栈的时候会将变量值同时压入进去
	defer fmt.Println("num1=", num1)
	num += 90
	num1 += 50
	// 栈的特点先进后出
	// 在函数执行完成后，从栈中取出语句开始执行，按照先进后出的规则执行语句
	var sum int = num + num1
	fmt.Println("sum=", sum)

	return sum
}

func StringApi() int {
	var name string = "Golang你好"

	return strings.Count(name,"gg")
}

func TimeApi() time.Time {
	now := time.Now()

	return now
}

func InnerApi() *int {
	/*str := "venki.chen"
	return len(str)*/

	num := new(int)

	return num
}
